Tarjan's strongly connected components algorithm